<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>防抖原理</title>
  </head>
  <body>
    <input type="text" name="" id="" />
  </body>
  <script>
    // 防抖
    // 事件触发了n次只执行最后一次
    // 使用场景最多的就是input事件
    let timeId
    // input输入事件 输入值时触发
    document.querySelector('input').oninput = function () {
      // 开启延时器之前 先清除上一次开启的延时器
      clearTimeout(timeId)
      timeId = setTimeout(() => {
        console.log(this.value)
      }, 300)
    }
    // 节流
    // 减少事件触发的频率
    let flag = true
    document.querySelector('input').oninput = function () {
      if (flag) {
        console.log(this.value)
        flag = false
        setTimeout(() => {
          flag = true
        }, 500)
      }
    }
  </script>
</html>
